package com.yilin.platform.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.yilin.platform.base_core.tools.cmbc.entity.balanceDetails.TrsDtlDownLoad;
import com.yilin.platform.entity.cmbc.CmbcTradeRecord;
import com.yilin.platform.base_core.tools.cmbc.utils.CmbcResData;
import org.springframework.lang.Nullable;

import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public interface IBankCmbcService extends IService<CmbcTradeRecord> {

    CmbcResData transferXfer(CmbcTradeRecord recordFlow);

    /*单笔查询*/
    CmbcResData  transferQryXfer(String insId, @Nullable String servid);


    /*平台内部调用 定时函数查询*/
    CmbcTradeRecord platTransferQryXfer(CmbcTradeRecord recordFlow);

    /*批量转账*/
    CmbcResData  transferBatchXfer(String batchNo, String payerAcct, List<Map<String, Object>> mapList);

    /* 批量费用报销、代发工资查询*/
    CmbcResData batchCostReimbNew(String batchNo, String payerAcct, String payType, List<Map<String, Object>> mapList);

    /*批量转账查询*/
    CmbcResData  transferQryBatchXfer(String batchTradeNo);

    /* 平台内部调用 批量转账查询 定时函数调用*/
    List<CmbcTradeRecord>  platTransferQryBatch(List<CmbcTradeRecord> recordFlowList);

    //    平台内部批量查询转账
    List<CmbcTradeRecord> platTransferQryHealfBatch(List<CmbcTradeRecord> recordFlowList);

    CmbcResData depositAccountDetail(String companyNo, Date beginDate, Date endDate);

    TrsDtlDownLoad trsDtlDownLoad(String acntNo, Date dateFrom, Date dateTo, Integer
            sartNo, Integer queryRows);

    CmbcResData qryBalNew(String[] acntNos);

    CmbcResData qryHistoryBal(String acntNo, @Nullable Date qryDate);

    CmbcResData qryTrsDtl(String acntNo, Date dateFrom, Date dateTo, Integer startNo, Integer
            endNo);

    CmbcResData electNotePrint(String acntNo, Date startDate, Date endDate);


    CmbcResData qryAcctList();

    CmbcResData b2eElectNoteDownLoadNew( String acNo, String[] innerNos, String[] fileNames, Integer operFlag, @Nullable Integer needSign);

    CmbcResData electnoteListQry( String saAcctNo, Date qryStartDate, Date qryEndDate, Integer printState,
                                 Double minMoney, Double maxMoney, Integer loanFlag, Integer pageNo, Integer pageSize);


    CmbcResData interestSettlementQryB2e(String insId,String acNo, Date qryDate);

    List<Map<String,Object>>  getBankBatchBankNo(String[] bankName);

    /*银行公告查询*/
    CmbcResData getEntNoticeQryB2e();

    Map<String, Object> getCmbcInfo();


    List<CmbcTradeRecord> getRecordFlowByBatchNo(String batchNo);

    CmbcTradeRecord getRecordFlowByTradeNo(String tradeNo);

    List<CmbcTradeRecord> getNotificationList();

    //   获转批量转账需要查询的
    List<CmbcTradeRecord> getNotificationBatchNoList();

    //   获转批量代发工资费用报销需要查询的
    List<CmbcTradeRecord> getNotificationBatchBehalfNoList();

    // 定时函数调用批量查询接口
    void myTaskOneMinuteBatch();

    // 定时函数单笔查询
    void myTaskOneMinute();

    /*定时函数调用批量查询接口*/
    void myTaskOneMinuteBehalfBatch();

    // 获取单笔转账处理中的条数
    Integer getCmbcHandleSingleTransferCount();

    // 获取批量转账处理中的条数
    Integer getCmbcHandleBatchTransferCount();

    //  获取批量费用报销，代发工资处理中的条数
    Integer getCmbcHandleFeeAgencyCount();
}
